<style scoped src="./index.scss" lang="scss" rel="stylesheet/scss"></style>
<template src="./index.html"></template>
<script>
export default {
    mixins: [Vue.prototype.$vFN.Mixins.Base, Vue.prototype.$vFN.Mixins.Edit],
    data() {
        return {
            appWindow: window,
            boxVisible: false,
            form: {
                // 模板名称
                name: "",
                // 计价方式
                calculateType: "1",
                // 是否默认
                isDefault: 0,
                templateDetailLst: [
                    {
                        // 名称
                        areaName: "所有地区",
                        // 数据
                        areaInfo: true,
                        // 第一条为1，其他为0
                        isDefault: 1,
                        // 首件
                        baseAmount: "",
                        // 运费
                        baseUnit: "",
                        // 续件
                        extendAmount: "",
                        // 续费
                        extendUnit: "",
                    },
                ],
            },

            // 页面接口地址
            apiUrl: {
                create: "mall-site-portal/freight-template/create",
                update: "mall-site-portal/freight-template/update",
                detail: "mall-site-portal/freight-template/getItem",
            },
            // 表格查询数据
            mixinTable_tableSearchData: {
            },
          

            // 数据字典 计价方式
            dict_template_calculate: [],

            // 选择配送区域记录索引
            selectDeliverAreaIndex: null,
        };
    },
    methods: {
        async sum() {
            let res = await this.$vFN.Http.post({
                domain: "APP_MAIN_DOMAIN",
                url: this.apiUrl.create,
                data: this.form,
            }, window);
            if(res.code == 200) {
                this.onSubmitSuccess();
                this.mixinEdit_editVisible = false;
                this.$vFN.Tools.messageSuccess("添加成功");
            }
        },
        validator1(rule, value, callback, item, index) {
            // console.log("122",this.form.calculateType);
            if (index == 0 && !item.areaInfo) {
                callback();
            } else if (value < 1 && this.form.calculateType == 1) {
                callback(new Error("最小为1"));
            }else if(value <= 0 && (this.form.calculateType == 2 || this.form.calculateType == 3) ){
                 callback(new Error("大于0"));
            }else {
                this.validator(rule, value, callback, item, index);
            }

        },
        // 输入框校验
        validator2(rule, value, callback, item, index) {
            if (index == 0 && !item.areaInfo) {
                callback();
            } else {
                this.validator(rule, value, callback, item, index);
            }
        },
        // 输入框校验
        validator(rule, value, callback, item, index) {
            // 按件数
            if (this.form.calculateType == "1") {
                this.$vFN.Tools.validateStock(rule, value, callback);
            }
            // 按重量
            else if (this.form.calculateType == "2") {
                this.$vFN.Tools.validateMoney(rule, value, callback);
            }
            // 按体积
            else if (this.form.calculateType == "3") {
                this.$vFN.Tools.validateMoney(rule, value, callback);
            }
        },
        // 删除模板
        delDeliverArea(item_, index_) {
            this.$delete(this.form.templateDetailLst, index_);
        },
        // 添加模板
        addTemplate() {
            let _is = 0;
            let _tips = "请填写完整的表格内容";

            this.form.templateDetailLst.forEach((item, index) => {
                // 如果不是第一个默认地址
                if (index != 0) {
                     // 可配送区域为空 提示文字
                    if(this.$vFN.Utils.isEmpty(item.areaName)){
                        _tips = "请选择可配送区域";
                    }
                    // 判断是否有空值
                    if (
                         this.$vFN.Utils.isEmpty(item.areaName) == true ||
                         this.$vFN.Utils.isEmpty(item.baseAmount) == true ||
                         this.$vFN.Utils.isEmpty(item.baseUnit) == true ||
                         this.$vFN.Utils.isEmpty(item.extendAmount) == true ||
                         this.$vFN.Utils.isEmpty(item.extendUnit) == true
                    ) {
                        _is += 1;
                    }
                }
            });
            // 如果空值数==0
            if (_is == 0) {
                this.form.templateDetailLst.push({
                    // 名称
                    areaName: "",
                    // 数据
                    areaInfo: {},
                    // 第一条为1，其他为0
                    isDefault: 0,
                    // 首件
                    baseAmount: "",
                    // 运费
                    baseUnit: "",
                    // 续件
                    extendAmount: "",
                    // 续费
                    extendUnit: "",
                });
            } else {
                this.mixinEdit_formValidate("editForm");
                this.$vFN.Tools.messageError(_tips);
            }
        },
       
        // 选择配送区域
        selectDeliverArea(item_, index_) {
            let _selectList = [];
            this.form.templateDetailLst.forEach((item, index) => {
                if (typeof item.areaInfo == "object" && index_ != index) {
                    _selectList.push(item.areaInfo);
                }
            });
            let _selected = this.$vFN.Utils.deepMerge(_selectList);

            this.selectDeliverAreaIndex = index_;
            this.$vFN.Directives.SelectDeliverArea({
                appWindow:this.appWindow,
                list: item_.areaInfo,
                disable: _selected,
                onSuccess: (res) => {
                    let _areaName = [];
                    for (let i in res.list) {
                        let _item = res.list[i];
                        if (_item.checkAll) {
                            _areaName.push(_item.name + "[全境]");
                        } else {
                            let _a = [];
                            for (let ii in _item.list) {
                                let _iitem = _item.list[ii];
                                _a.push(_iitem.name);
                            }
                            _areaName.push(
                                _item.name + "[" + _a.join("、") + "]"
                            );
                        }
                    }

                    let _name = "";
                    if (res.checkAll) {
                        _name = "所有地区";
                    } else {
                        _name = _areaName.join("、");
                    }
                    this.form.templateDetailLst[
                        this.selectDeliverAreaIndex
                    ].areaInfo = res.list;
                    this.form.templateDetailLst[
                        this.selectDeliverAreaIndex
                    ].areaName = _name;
                    this.selectDeliverAreaIndex = null;
                },
            });
        },
        // 初始化
        async init() {
            // 初始化数据
            await this.mixinEdit_editBoxInit({
                model: "form",
                id: this.id,
                onInit: async () => {
                    return true;
                },
            });
        },

        // 编辑修改的参数扩展方法
        mixinEdit_editDataExtend(data_) {
            console.log("--1", {
                ...data_,
            });
            // 添加
            if (this.mixinEdit_editType == "add") {
            }
            // 修改
            else if (this.mixinEdit_editType == "update" || this.mixinEdit_editType == "copy") {
                if (data_.templateDetailLst[0].isDefault == 1) {
                    data_.templateDetailLst[0].areaInfo = true;
                } else {
                    data_.templateDetailLst.unshift({
                        // 名称
                        areaName: "所有地区",
                        // 数据
                        areaInfo: false,
                        // 第一条为1，其他为0
                        isDefault: 1,
                        // 首件
                        baseAmount: "",
                        // 运费
                        baseUnit: "",
                        // 续件
                        extendAmount: "",
                        // 续费
                        extendUnit: "",
                    });
                }

                let _list = [];
                data_.templateDetailLst.map((item) => {
                    if (item.isDefault == 1) {
                        _list.push(item);
                    } else {
                        item.areaInfo = JSON.parse(item.areaInfo);
                        _list.push(item);
                    }
                });
                data_.templateDetailLst = _list;
            }
            console.log("--2", {
                ...data_,
            });
            return data_;
        },
        // form 提交添加/修改 的参数扩展方法
        mixinEdit_editFormSubmitExtend(data_) {
            let _list = [];
            let _err = "";
            data_.templateDetailLst.map((item) => {
                if (item.isDefault == 1) {
                    if (item.areaInfo == true) {
                        item.areaInfo = null;
                        _list.push(item);
                    }
                } else {
                    if (this.$vFN.Utils.isEmpty(item.areaInfo)) {
                        _err = "请选择可配送区域";
                    }
                    item.areaInfo = JSON.stringify(item.areaInfo);
                    _list.push(item);
                }
            });
            data_.templateDetailLst = _list;
            console.error("_err", _err);
            if (_err != "") {
                // this.$vFN.Tools.messageError(_err);
                return false;
            } else {
                return data_;
            }
        },
       
    },
    mounted() {
        this.init();
    },
    activated() {},
};
</script>